Generating An Ordering Of Workflow Items Given A Partial Ordering And Extension Data

ABSTRACT

A method of processing items associated with a workflow includes accessing information that specifies, for each item to be processed, each of one or more primary input items required under normal conditions to produce the item. The method also includes accessing information that specifies, for at least one primary input item, an alternative input item that may replace the primary input item under alternative conditions in producing the item to be processed. The items to be processed are ordered such that: (a) each item to be processed that has one or more primary input items is placed ahead of its primary input items; and (b) each primary input item that has one or more alternative input items is placed ahead of its alternative input items provided doing so is not inconsistent with the ordering according to condition (a) and is also not inconsistent with the ordering according to condition (b).

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.09/956,439, filed on Sep. 18, 2001, entitled “GENERATING AN ORDERING OFWORKFLOW ITEMS GIVEN A PARTIAL ORDERING AND EXTENSION DATA,” whichclaims the benefit under 35 U.S.C. § 119(e) to U.S. ProvisionalApplication No. 60/234,862, filed Sep. 22, 2000, and entitled “Systemand Method for Generating a Total Ordering of Objects from a PartialOrdering with Possibly Inconsistent Extension Data.” U.S. patentapplication Ser. No. 09/956,439 and U.S. Provisional Application No.60/234,862 are assigned to the assignee of the present application. Thesubject matter disclosed in U.S. patent application Ser. No. 09/956,439and U.S. Provisional Application No. 60/234,862 is hereby incorporatedby reference into the present disclosure as if fully set forth herein.

TECHNICAL FIELD

This invention relates to logistics planning, and more specificallygenerating a total ordering of workflow items given a partial orderingand extension data.

BACKGROUND

Allocation of resources, which may include tangible resources (such asraw materials, component parts, equipment, and labor) or intangibleresources (such as processing time and cost allocation), typically posesmany challenges in commercial or other enterprises. Given the numerousways in which available resources may be allocated in connection withactivities of an enterprise, and the fact that resource allocationschemes may differ widely as to their efficacy (in terms of theirability to maximize output, profit, or other desired performancemeasures), complex systems for logistics planning have been developed.Such logistics planning systems have been advantageously used in, forexample, manufacturing a product within a factory or other manufacturingenvironment. In considering a manufacturing process for an item, forexample, it may be necessary to account for the materials, components,or other inputs that will be used in assembling, fabricating,processing, synthesizing, or otherwise producing the item. However,prior techniques have been suboptimal in that they have not typicallyemployed intelligent methods to properly order items for considerationby an associated logistics planning system.

SUMMARY

According to the present invention, disadvantages and problemsassociated with previous logistics planning techniques are reduced oreliminated.

In one embodiment of the present invention, a computer-implementedmethod of processing items associated with a workflow includes accessinginformation that specifies, for each item to be processed, one or moreprimary input items that may be required under normal conditions toproduce the item to be processed. The method also includes accessinginformation that specifies, for at least one primary input item, analternative input item that may replace the primary input item underalternative conditions in producing the item to be processed. The itemsto be processed are ordered such that: (a) each item to be processedthat has one or more primary input items is placed ahead of its primaryinput items; and (b) each primary input item that has one or morealternative input items is placed ahead of its alternative input itemsprovided doing so is not inconsistent with the ordering of items orderedaccording to 15 condition (a) and is also not inconsistent with theordering of items ordered according to condition (b). The ordered itemsare processed according to the ordering using a software component.

In another embodiment, a computer-implemented method of processing itemsassociated with a workflow includes accessing information thatspecifies, for each of a plurality of items, one or more primary inputitems that under normal conditions would be upstream of the item withinthe workflow. The method also includes accessing information thatspecifies, for each of one or more items within the plurality of items,one or more alternative input items that under alternative conditionswould be upstream of the item within the workflow instead ofcorresponding primary input items, where each alternative input itemcorresponds to one or more primary input items. An ordered list of theitems is generated such that: (a) each item having one or more upstreamprimary input items is placed ahead of these primary input items; and(b) each primary input item corresponding to one or more alternativeinput items is placed ahead of these corresponding alternative inputitems provided doing so is not inconsistent with the ordering of itemsordered according to condition (a) and is also not inconsistent with theordering of items ordered according to condition (b). The items areprocessed according to the ordered list using a software component.

Particular embodiments of the present invention may provide one or moretechnical advantages. The present invention generates an ordering ofitems, which may be a total ordering, given a partial ordering of theitems and extension data reflecting one or more extensions to thepartial ordering. For example, the present invention may be used to sortitems in a factory or other manufacturing environment such that (1)input items used to produce another item are placed behind that item inan ordered list of items and, at the same time, (2) any alternates to aprimary item are placed behind the primary item in the ordered listwhere possible. Since the second criterion may contradict the firstcriterion in some cases, and may contradict itself in some cases,providing an efficient technique that uses the second criterion for thesort only when it is appropriate to do so may provide an importanttechnical advantage in certain embodiments. In a particular embodimentin which items are associated with a manufacturing process, thegenerated ordering of items may be used in determining a total demandfor an item considering demands for all other items to which the item isa direct or indirect input, which may allow for more efficient resourceallocation, planning, scheduling, or other appropriate tasks. Thepresent invention may allow a planning, scheduling, or other logisticssystem to loop through a list of all relevant items such that an item isconsidered before any of its input items and, to the extent possibleconsistent with this goal, such that a primary item is considered beforeone or more alternates of the primary item. One or more other technicaladvantages may be apparent to those skilled in the art from the figures,descriptions, and claims included herein.

BRIEF DESCRIPTION OF THE DRAWINGS

To provide a more complete understanding of the present invention andthe features and advantages thereof, references is made to the followingdescription taken in conjunction with the accompanying drawings, inwhich:

FIG. 1 illustrates an example process for generating an ordering ofitems given a partial ordering and extension data; and

FIG. 2 illustrates an example initialization phase portion of an exampleprocess for generating an ordering of items given a partial ordering andextension data;

FIG. 3 illustrates an example downstream transitive closure phaseportion of an example process for generating an ordering of items givena partial ordering and extension data;

FIG. 4 illustrates an example downstream transitive closure sub-process;

FIG. 5 illustrates an example extension phase portion of an exampleprocess for generating an ordering of items given a partial ordering andextension data; and

FIG. 6 illustrates an example sort phase portion of an example processfor generating an ordering of items given a partial ordering andextension data.

DETAILED DESCRIPTION

In manufacturing environments, it may be desirable to reduce thecomplexity and number of calculations involved in determining demand orother values for items associated with a manufacturing process. Suchitems might include raw materials, component parts, assemblies, finishedproducts, or any other suitable items. While items are primarilydescribed as being physical things, or representations of physicalthings in a computer data structure, the present invention contemplatesitems being any appropriate tangible or intangible things, such as mereitems of information. In some manufacturing environments, such as thoseinvolving lot sizing, consolidation, usage of primary versus alternateitems, or other constraints, calculations are often simplified if thetotal demand or other value of interest for a particular item is knownbefore attempting to determine how and in what quantities the particularitem will be produced. To this end, it may be desirable to know thecomplete set of demands or other values of interest for all other itemsdirectly or indirectly produced using the particular item beforeplanning the manufacture of the particular item. Intelligently orderingitems for consideration by a suitable planning, scheduling, or otherlogistics system may help accomplish this goal. Those skilled in the artwill appreciate that, although ordering of items in a manufacturingenvironment is primarily described, particularly for purposes of demandplanning, the present invention encompasses the ordering or any suitableworkflow items for any appropriate purpose. The present invention may beimplemented in a system incorporating one or more processors, memory,and other resources associated with one or more computers.

As discussed above, computing efficiency may be enhanced where the totaldemand for an item is known before computation is attempted. Toillustrate this, consider an example situation in which a factory mustfill three separate customer orders, each customer order requiring tenunits of some item A. In this example, the factory consolidates itsmanufacturing orders and will create as few manufacturing orders aspossible to produce the thirty total units of item A that are needed tosatisfy the three customer orders. This would mean producing all thirtyunits of item A in one manufacturing order. However, further assume inthis example that lot sizing restrictions are imposed by the equipmentused to build item A and require that each manufacturing order be for noless than fifteen units and no more than twenty-five units. Therefore,the thirty units of item A will need to be produced in at least two (andpossibly more) manufacturing orders.

Processing the customer orders one at a time using a factory planningsystem might involve first creating a manufacturing order for ten unitsof item A to fill the first customer order. To fill the second customerorder, the existing manufacturing order might be enlarged to account forthe twenty total units of item A needed for the first and secondcustomer orders. To fill the third customer order, however, severalpossibilities might exist depending on the sophistication of theplanning system. The existing manufacturing order might be enlarged totwenty-five units, the maximum under the example lot-sizing restriction,and a new manufacturing order created for the minimum fifteen units,producing ten units more than necessary. The existing manufacturingorder might be left at twenty units, and a new manufacturing ordercreated for the minimum fifteen units, producing five more units thannecessary. Or, to achieve the least wasteful overall plan, the existingmanufacturing order might be reduced to fifteen units and a newmanufacturing order created for the remaining fifteen units.

With any of these options, valuable time and computing resources may bewasted if each step involves recomputing the total demand for item A andreserving the items used in producing item A, the items used inproducing these items, and so on upstream. On the other hand, if it isknown at the outset that the total demand for item A is thirty units,two manufacturing orders may be created at the outset. As this simpleexample illustrates, valuable time and computing resources may be savedby knowing which downstream demands require item A as input and modelingthose demands to arrive at the total demand for item A before modelingthe manufacturing orders that will produce item A. Downstream demandsfor an item A may include customer orders, manufacturing operationsassociated with the production of another item, or any other suitabledemands.

Given a set of items, a partial ordering of the items provides originalordering information specifying that for any two distinct items A and Bin the partial ordering: (1) A occurs before B, (2) B occurs before A,or (3) A is unrelated to B. An extension of a partial ordering specifiesadditional ordering information that supplements the original orderinginformation in the partial ordering, indicating that some first item isearlier than (referred to where appropriate as being “less than” or“downstream of”) some second item within a final sorted list of itemswhere the original ordering information in the partial ordering mightnot have indicated this, thereby leaving the first item and the seconditem non-comparable with respect to ordering. As an example, a finishedassembly A may require component parts B and C, but if a shortage ofpart C occurs, then part D may be used in place of part C. In thisexample, a partial ordering would specify parts B, C, and D all beinglater than (referred to where appropriate as being “greater than” or“upstream of”) part A in a final sorted list of items. An extension tothe partial ordering may specify part D being later in the final sortedlist than part C, such that an associated logistics planning system maycheck for shortages of part C before processing part D. The extensionformalizes the logic that even though part C and part D may benon-comparable with respect to ordering under the partial ordering, acertain ordering between them is desirable when the partial ordering issupplemented through the extension. The additional ordering informationin the extension may in particular cases be contradictory to theoriginal ordering information in the partial ordering or evenself-contradictory {e.g., part D may be an alternate for part C under acertain set of conditions, while part C may be an alternate for part Dunder another set of conditions). The present invention contemplates anextension providing any appropriate additional ordering information tosupplement the original ordering information in a partial ordering.

Given a set of items, a total ordering of the items specifies that forany two distinct items A and B in the total ordering: (1) A occursbefore B or (2) B occurs before A (but not both), and therefore providesa final sorted list of items such as that described above with referenceto partial orderings. In one embodiment, a total ordering specifies theorder in which the items are processed (e.g., at an appropriatelogistics planning system) such that the demand or other value ofinterest for each particular item is known at the time the particularitem is processed. A total ordering of items may be generated accordingto the present invention given a partial ordering of the items andextension data that reflects one or more extensions to the partialordering. An applicable logistics planning system will preferablyaccount for both the partial ordering and the one or more extensions, asreflected in a total ordering, in performing its tasks.

In one embodiment, the present invention provides a technique forordering items used within a workflow by obtaining information regardingthe relative order of items and arranging these items such that theyconform to the obtained information. As an example, the presentinvention may arrange items to facilitate more efficient calculation ofthe demand for each item, which is dependent on the demand for all itemsto which the considered item is an input. In logistics planning tofacilitate the use of items within a factory or other workflowenvironment, it may be desirable to sort the items such that each outputitem of a workflow operation is placed before the one or more inputitems of the workflow operation. Pursuant to this ordering, one or moreitems at the front of a sorted list, for which demands are known, areanalyzed first. Analysis then proceeds to subsequent items on the list,which are inputs to the previously listed items and for which demandswill depend on the demands for the previously items to which thesubsequently listed items are inputs. This ordering is preferablyconsistent with any extensions. In one embodiment, an ordering of itemsgenerated according to the present invention allows for more efficientcalculation of demands or other values of interest for workflow itemsthan has been possible using previous techniques.

Typically, production requirements are specified in routings concerningthe inputs and outputs for a particular item. For example, a routingmight be expressed as, “To produce one unit of assembly A using routingR1, two units of part B and three units of part C are needed.” In thisexample, assembly A is considered to be “downstream” of parts B and C,because a manufacturing process is often thought of as a flow of itemsfrom the most “upstream” raw materials or component parts to the mostdownstream assemblies or finished products. To more efficientlycalculate the demand or other value of interest for all the items in theprocess, the above items should be ordered such that assembly A isconsidered before parts B and C. Thus, in one embodiment, according to a“First Rule,” an item downstream from another item in the workflow isplaced earlier in the ordering than the other item.

The present invention preferably takes into account that there may bemore than one way to produce assembly A, for example, if shortages ofeither part B or of part C occur. Assume routing R1 (described above) isthe preferred mode for making assembly A. There may exist a routing R2included in an extension that states, “To produce one unit of assemblyA, a unit of part D may be used in place of a unit of part B if there isa shortage of part B.” There may also exist a routing R3 included inanother extension that states, “To produce one unit of assembly A, aunit of part E may be used in place of a unit of part C if there is ashortage of part C.” To more efficiently calculate the demands or othervalues of interest for all the items in the process, according to theFirst Rule described above, assembly A is placed before parts B and Cand also before parts D and E in the total ordering. Parts B and C areplaced before parts D and E in the total ordering since demand or othercalculations for parts B and C should proceed those for parts D and E;only if the quantities of parts B and/or C are insufficient to meet thedemand for assembly A will additional demands for parts D and E (demandsresulting from shortages of parts Band/or C) be calculated. Thus, in oneembodiment, according to a “Second Rule,” alternate parts (e.g., parts Dand E) are placed in the total ordering behind the primary parts (e.g.,parts B and C) they would replace.

In one embodiment, the present invention associates with each item twolists. The first of these lists is referred to as “d” for convenienceand is denoted “d(G)” for an item G. This first list will eventually befilled with all items that are downstream of (i.e. directly orindirectly produced using) item G according to the partial ordering.Taking a simple example, if an item X is to be produced using a primaryitem P, and the primary item P has an alternative item A, then the firstlist for item P will include item X and the first list for item A willsimilarly include item X. The second list is referred to as “p” forconvenience and is denoted “p(G)” for item G. This second list willeventually contain all items not in d(G) that one or more extensionswould place downstream of item G. For the same example, where item X isto be produced using primary item P, and primary item P has analternative item A, then the second list for item P will be empty(assuming in this example that item P is not an alternative item forsome other primary item Q under a different routing). The second listfor item A will include item P, all the items in the first list of itemP, and all the items in the second list of item P, excluding any itemsalready in the first list of item A.

In creating a total ordering of workflow items G, the number of items inthe p and d lists of each item G are determined and summed. The items Gare then sorted such that the item G with the lowest sum, for example, afinished assembly that is not upstream of any other items G, is placedat the front of the total ordering. Remaining items G are ordered suchthat each item G is placed in front of any items having higher sums.This implements the First and Second Rules described above, withdownstream items G being placed towards the front and alternative itemsG being placed behind their primary items. In one embodiment, the orderamong any items G with equivalent sums does not matter.

Thus, given a set of items, a partial ordering of the items, andextension data that specifies one or more extensions to the partialordering, the present invention generates an ordering of the items thatextends the partial ordering while satisfying both the partial orderingand the extensions, provided the extensions do not contradict thepartial ordering and are also not self-contradictory. Stated anotherway, the total ordering preserves the partial ordering and incorporatesthat portion of the extension data that is consistent with the partialordering and self-consistent. The generated ordering may be a totalordering as defined above. In alternative embodiments, the presentinvention may generate an ordering that extends the partial ordering butis not considered a total ordering. For example, within a distributed orother multi-processor computing environment, it might be desirable tosearch for items that remain non-comparable under a partial ordering andafter factoring in appropriate extension data, and then to process thesenon-comparable items substantially simultaneously using multipleprocessors (each of the non-comparable items being processed by adifferent processor).

In the description that follows, the current item will be referred to as“U” because it will generally be upstream of the other items beingdiscussed. U may be used as a loop variable or recursive variable, aswill be made clear in each step of the process described below. It isalso assumed that one reasonably skilled in the art could use flags forsuch standard purposes as preventing an item from having the same stepperformed on it multiple times, preventing lists from being searchedunnecessarily, and preventing other unnecessary operations. Suchtechniques are well known and would only serve to obscure the essence ofthe present invention if included in the description that follows.Therefore, they are omitted.

FIG. 1 illustrates an example process for generating a total ordering ofworkflow items given a partial ordering and one or more extensions. Theprocess includes an initialization phase at step 10, where for each itemU to be ordered the lists d(U) and p(U) are filled with the properitems. A downstream transitive closure (DTC) phase occurs at step 12,where for each item U to be ordered a DTC sub-process is performed withrespect to the item U. An extension phase occurs at step 14, where eachitem D that should be placed earlier than (“downstream” of) item Uaccording to the extension data is placed into p(U). A sort phase occursat step 16, where the items U are sorted to generate an ordering, suchas a total ordering, that extends the partial ordering. Theinitialization, DTC, extension, and sort phases are described in furtherdetail below.

FIG. 2 illustrates an example initialization phase portion of an exampleprocess for generating an ordering of workflow items given a partialordering and one or more extensions. The initialization phase of theprocess begins at steps 20 and 22, which collectively illustrate thatfor each item U to be ordered, a loop is performed through datacontaining the partial ordering until all items in the partial orderinghave been considered. As an example, routings or any other suitableinformation may specify the partial ordering (i.e. for each item,specifying which items will be placed earlier than (“downstream” of or“less than”) that item in a final sorted list). If an item D encounteredshould be placed immediately ahead of item U according to the partialordering data, and item D is not the same as item U, then item D isadded to d(U) at step 22. For example, steps 20 and 22 may take allitems of which item U is a direct input and place these items into d(U).As a more particular example, assume that item U is a metal pin in ahinge assembly that is part of a door assembly. Steps 20 and 22 willplace the hinge assembly into d(U), since the metal pin is a directcomponent of the hinge assembly in this example. However, steps 20 and22 would not place the entire door assembly into d(U), because in thisexample the metal pin is not a direct component of the door assembly.

When all the items within the partial ordering data have been consideredat step 20, the process proceeds to steps 24 and 26, which collectivelyillustrate that for each item U to be ordered, a loop is performedthrough the data containing one or more extensions to the partialordering until all items in the extensions have been considered. If anitem D encountered should be placed immediately ahead of item Uaccording to the extension data, and item D is not the same as item U,then the item D is added to p(U) at step 26. As just an example, assumethat an extension stated that bolt U_(b) could replace the metal pin inthe hinge assembly described above where a shortage of the metal pinexists. In this example, steps 24 and 26 would place the metal pin(though not the hinge assembly) into p(U_(b)). The loops through thepartial ordering data (steps 20 and 22) and the extension data (steps 24and 26) may occur concurrently or in any suitable order. When all theitems in the extension data have been considered at step 26, theinitialization phase is complete. At the end of the initializationphase, for all items U, item U is neither a member of d(U) nor of p(U).

FIG. 3 illustrates an example DTC phase portion of an example processfor generating an ordering of workflow items given a partial orderingand one or more extensions. As collectively illustrated in steps 30through 36, the DTC phase of the process involves looping through eachitem U to be ordered and performing a DTC sub-process for each item U atstep 34, until the DTC sub-process has been performed for all such itemsat step 34, then the DTC sub-process is exited.

FIG. 4 illustrates an example DTC sub-process, which may be a functioncalled within the DTC phase (at step 34 of FIG. 3 as described above).If the DTC sub-process has already been performed on item U at step 40,then the DTC sub-process is exited, we return to the caller of the DTCsub-process, and we proceed to either step 36 of FIG. 3 or step 48 ofFIG. 4 as appropriate. If the DTC sub-process has not already beenperformed on item U at step 40, then as illustrated in steps 42 through50, the DTC sub-process involves looping through each item D in d(U),performing the DTC sub-process on each item D (step 46), and copying orotherwise adding each item X in d(D) to d(U) unless item X is already ind(U) or item X is the same as item U (step 48). Set D=next item of d(U)at step 50; of no D then the process is exited at step 44.

To further illustrate the recursive nature of the DTC sub-process,assume for example that item A is made from item B, item B is made fromitem C, item C is made from item D, and item D is made from item U.After initialization (FIG. 2) in this example we expect that d(A) isempty, d(B) contains item A, d(C) contains 30 item B, d(D) contains itemC, and d(U) contains item D. For the sake of illustration, assume thatthe DTC sub-process is first called on item U, this call being referredto as “DTC(U)” for convenience. DTC(D) is called at step 46 withinDTC(U), DTC(C) is in turn called at step 46 within DTC(D), DTC(B) is inturn called at step 46 within DTC(C), and DTC(A) is in turn called atstep 46 within DTC(B). Since d(A) is empty, there is nothing to do inDTC(A) and DTC(A) is exited to step 48 of DTC(B). Since d(A) is empty,there is also nothing to do at step 48 within DTC(B) and DTC(B) isexited to step 48 within DTC(C). At step 48 within DTC(C), the contents(item A) of d(B) are copied or otherwise added to d(C) such that d(C)now contains both items A (the contents of d(B) just added) and B (therepreviously) downstream of item C. DTC(C) is exited to step 48 withinDTC(D). At step 48 within DTC(D), the contents (items A and B) of d(C)are copied or otherwise added to d(D), such that d(D) now contains allitems A, B, (the contents of d(C) just added) and C (there previously)downstream of D. DTC(D) is exited to step 48 within DTC(U). At step 48within DTC(U), the contents (items A, B, and C) of d(D) are copied orotherwise added to d(U), such that d(U) now contains all items A, B, C,(the contents of d(D) just added) and D (there previously) downstream ofU, which is the desired result.

The DTC sub-process considers each item D that is immediately downstreamof item U. Step 46 ensures that d(D) contains not only the items thatare immediately downstream of item D, but all items that are downstreamof item D. Step 48 adds to d(U) all those items downstream of D (i.e.the contents of d(D)) to d(U). Since within the loop of FIG. 4 steps 46and 48 are performed for each item D immediately downstream of item U,when the loop completes d(U) will contain all items that are downstreamof item U.

FIG. 5 illustrates an example extension phase portion of an exampleprocess for generating an ordering of workflow items given a partialordering and one or more extensions. As collectively illustrated insteps 60 through 82, the extension phase of the process involves loopingthrough each item U to be ordered and placing each item that is ahead of(“downstream” of) item U according to the extension data into p(U). Foran item U, at step 62, a list c(U) for the item U is emptied, the itemscontained in p(U) are placed in c(U), and p(U) is emptied. At step 64,for each item D in d(U), p(D) is added to c(U). Steps 66 through 78involve looping through all the items P contained in c(U). For a currentitem P, if at step 70 item P is not the same as U and d(P) does notcontain item U, then item P and the items in d(P) are copied orotherwise added to p(U) at step 72, the items in p(P) are copied orotherwise added to c(U) at step 74, and for each item Q in d(P) theitems in p(Q) are copied or otherwise added to c(U) at step 76. In allcopies or other adds performed within the extension phase, if the itemto be added is already in d(U) or p(U), then the add should not beperformed. Also, in connection with steps 74 and 76, if the item is itemU itself or is already contained in c(U), then the add should not beperformed. These exceptions may be used to prevent duplicates, itemsbeing common to both d(U) and p(U), and needless work. If at step 70item P is the same as item U or d(P) contains item U, then the next itemP within c(U) is considered. Set P=first item in c(U) at step 66. Atstep 38 evaluate item P. If item P is contained in c(U) then go to step70. If item P is not contained in c(U) then go to step 70. If item P isnot contained in c(U) then go to step 80.

FIG. 6 illustrates an example sort phase portion of an example processfor generating an ordering of workflow items given a partial orderingand one or more extensions. As collectively illustrated in steps 90through 100, the sort phase of the process involves looping through eachitem U to be ordered and for a current item U, determining the number ofitems in d(U) at step 94, determining the number of items in p(U) atstep 96, and summing the numbers of items in d(U) and p(U) at step 98.After all the items U have been considered at step 92, the items aresorted at step 102 based on their corresponding sums to generate thedesired ordering. The generated ordering may be a total ordering asdefined above. As described above, smaller sums will be associated withitems that are ahead of other items (further “downstream”). Thus, theitem with the lowest sum is not behind (“upstream” of) any other itemsand is placed at the front of the ordering. Items are ordered accordingto the First and Second Rules, such that more downstream items areplaced towards the front and alternative items are placed behind theirassociated primary items where consistency allows. In one embodiment,ordering among items with equivalent sums does not matter. Thus, givensome set of items, a partial ordering of the items, and one or moreextensions to the partial ordering, an ordering is generated thatextends the partial ordering, satisfying the partial ordering as well asthe extensions, provided that the extensions do not contradict thepartial ordering and are not self-contradictory.

Although example embodiments of the present invention have beendescribed, a plurality of changes, substitutions, variations,alterations, and modifications may be suggested to one skilled in theart, and it is intended that the invention encompass all such changes,substitutions, variations, alterations, and modifications as fall withinthe spirit and scope of the appended claims.

What is claimed is:
 1. A method of processing items associated with aworkflow, comprising: accessing by a computer, partial ordering datathat specifies, for each item to be processed, one or more primary inputitems that is required under normal conditions to produce the item to beprocessed; accessing by the computer, extension data comprising one ormore alternative input items to replace the one or more primary inputitems when there is insufficient quantity of the one or more primaryinput items to meet a demand in producing the item to be processed, theextension data specifies one or more extensions to the partial orderingdata; generating by the computer, an ordering of the items to beprocessed such that: (a) each item to be processed that has one or moreprimary input items is placed ahead of its primary input items; and (b)each primary input item that has one or more alternative input items isplaced ahead of its alternative input items provided doing so is notinconsistent with the ordering of items ordered according to condition(a); and processing by the computer, the ordered items according to theordering.
 2. The method of claim 1, wherein processing an ordered itemcomprises determining a workflow value for the item.
 3. The method ofclaim 1, wherein the items comprise tangible items associated with amanufacturing process, processing an ordered item comprises determininga demand value for the item, and processing an ordered items accordingto the ordering.
 4. The method of claim 1, wherein the extension datafurther specifies which input items are primary input items to the itemthey produce.
 5. The method of claim 1, further comprising: generatingby the computer, a first list for each item to be processed, the firstlist for each item comprising all items that are expected to be producedusing each item, whether directly or indirectly, under normal conditionsaccording to the partial ordering data; and generating by the computer,a second list for each item to be processed, the second list for eachitem comprising all items to be produced using each item, whetherdirectly or indirectly, when there is insufficient quantity of the oneor more primary input items to meet the demand in producing the item tobe processed according to the extension data.
 6. The method of claim 5,further comprising: for each item to be processed, determining by thecomputer, the number of items contained in the corresponding first list;for each item to be processed, determining by the computer, the numberof items contained in the corresponding second list; for each item to beprocessed, summing by the computer, the numbers of items contained inthe corresponding first and second lists; and in ordering the items,sorting by the computer, the items to be processed such that each itemis placed ahead of any items having higher sums.
 7. A system ofprocessing items associated with a workflow, the system comprising oneor more computers each comprising a memory and a processor, the one ormore computers is configured to: access partial ordering data thatspecifies, for each item to be processed, one or more primary inputitems that is required under normal conditions to produce the item to beprocessed; access extension data comprising one or more alternativeinput items to replace the one or more primary input items when there isinsufficient quantity of the one or more primary input items to meet ademand in producing the item to be processed, the extension dataspecifies one or more extensions to the partial ordering data; generatean ordering of the items to be processed such that: (a) each item to beprocessed that has one or more primary input items is placed ahead ofits primary input items; and (b) each primary input item that has one ormore alternative input items is placed ahead of its alternative inputitems provided doing so is not inconsistent with the ordering of itemsordered according to condition (a); and process the ordered itemsaccording to the ordering.
 8. The system of claim 7, wherein processingan ordered item comprises determining a workflow value for the item. 9.The system of claim 7, wherein the items comprise tangible itemsassociated with a manufacturing process and processing an ordered itemcomprises determining a demand value for the item.
 10. The system ofclaim 7, wherein the extension data further specifies which input itemsare primary input items to the item they produce.
 11. The system ofclaim 7, wherein the one or more computers is further configured to:generate a first list for each item to be processed, the first list foreach item comprising all items that are expected to be produced usingeach item, whether directly or indirectly, under normal conditionsaccording to the partial ordering data; and generate a second list foreach item to be processed, the second list for each item comprising allitems that would be expected to be produced using each item, whetherdirectly or indirectly, when there is insufficient quantity of the oneor more primary input items to meet the demand in producing the item tobe processed according to the extension data.
 12. The system of claim11, wherein the one or more computers is further configured to: for eachitem to be processed, determine the number of items contained in thecorresponding first list; for each item to be processed, determine thenumber of items contained in the corresponding second list; for eachitem to be processed, sum the numbers of items contained in thecorresponding first and second lists; and in ordering the items, sortthe items to be processed such that each item is placed ahead of anyitems having higher sums.
 13. A non-transitory computer-readable mediaembodied with software that processes items associated with a workflow,the software when executed by one or more computers is configured to:access partial ordering data that specifies, for each item to beprocessed, one or more primary input items that is required under normalconditions to produce the item to be processed; access extension datacomprising one or more alternative input items to replace the one ormore primary input items when there is insufficient quantity of the oneor more primary input items to meet a demand in producing the item to beprocessed, the extension data specifies one or more extensions to thepartial ordering data; generate an ordering of the items to be processedsuch that: (a) each item to be processed that has one or more primaryinput items is placed ahead of its primary input items; and (b) eachprimary input item that has one or more alternative input items isplaced ahead of its alternative input items provided doing so is notinconsistent with the ordering of items ordered according to condition(a); and process the ordered items according to the ordering.
 14. Thenon-transitory computer-readable media of claim 13, wherein processingan ordered item comprises determining a workflow value for the item. 15.The non-transitory computer-readable media of claim 13, wherein theitems comprise tangible items associated with a manufacturing processand processing an ordered item comprises determining a demand value forthe item.
 16. The non-transitory computer-readable media of claim 13,wherein the extension data further specifies which input items areprimary input items to the item they produce.
 17. The non-transitorycomputer-readable media of claim 13, further configured to: generate afirst list for each item to be processed, the first list for each itemcomprising all items that are expected to be produced using each item,whether directly or indirectly, under normal conditions according to thepartial ordering data; and generate a second list for each item to beprocessed, the second list for each item comprising all items that wouldbe expected to be produced using each item, whether directly orindirectly, when there is insufficient quantity of the one or moreprimary input items to meet the demand in producing the item to beprocessed according to the extension data.
 18. The non-transitorycomputer-readable media of claim 13, further configured to: for eachitem to be processed, determine the number of items contained in thecorresponding first list; for each item to be processed, determine thenumber of items contained in the corresponding second list; for eachitem to be processed, sum the numbers of items contained in thecorresponding first and second lists; and in ordering the items, sortthe items to be processed such that each item is placed ahead of anyitems having higher sums.